from django.db import models
from django.contrib.auth.models import User


class PlanCuotas(models.Model):
    """Plan de cuotas."""
    nombre = models.CharField(max_length=50)
    importe = models.FloatField()

    class Meta:
        verbose_name_plural = "planes de cuotas"
        verbose_name = "plan de cuotas"
        
    def __unicode__(self):
        return self.nombre

class Zona(models.Model):
    """Zona de aportantes."""
    nombre = models.CharField(max_length=50)

    def __unicode__(self):
        return self.nombre


class Cobrador(models.Model):
    """Cobrador o repartidor de cuotas de la entidad."""
    nombre = models.CharField(max_length=50)
    direccion = models.CharField(max_length=100)
    tel_fijo = models.CharField(max_length=50)
    tel_movil = models.CharField(max_length=50)
    fecha_alta = models.DateField()
    notas = models.CharField(max_length=250)
    cobra = models.BooleanField()
    reparte = models.BooleanField()

    class Meta:
        verbose_name_plural = "cobradores"

    def __unicode__(self):
        return self.nombre


class Aportante(models.Model):
    """Aportante asociado a la entidad."""
    nombre = models.CharField(max_length=50)
    zona = models.ForeignKey(Zona, null=True, blank=True)
    direccion = models.CharField(max_length=100)
    tel_fijo = models.CharField(max_length=50)
    tel_movil = models.CharField(max_length=50)
    fecha_alta = models.DateField()
    notas = models.CharField(max_length=250)
    plan_cuotas = models.ForeignKey(PlanCuotas, null=True, blank=True)
    cobrador = models.ForeignKey(Cobrador, null=True, blank=True,
                                 related_name = "cobrar_set")
    repartidor = models.ForeignKey(Cobrador, null=True, blank=True,
                                   related_name = "repartir_set")

    def __unicode__(self):
        return self.nombre


class Cuota(models.Model):
    """Cuota correspondiente a un mes de un aportante."""
    FORMAS_COBRO = (('NC', 'No Cobrada'),
                    ('C', 'Cobrador'),
                    ('E', 'En la Entidad'),
                    ('CE', 'Cobro Express'))
    fecha = models.DateField()
    fecha_emision = models.DateField()
    fecha_cobro = models.DateField(null=True)
    forma_cobro = models.CharField(max_length=2, choices=FORMAS_COBRO)
    aportante = models.ForeignKey(Aportante)
    plan_cuotas = models.ForeignKey(PlanCuotas)
    importe = models.FloatField()
    repartidor = models.ForeignKey(Cobrador, null=True, blank=True)

    def __unicode__(self):
        return self.nombre
